﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using Public;

namespace QLNhanKhau
{
    public partial class UCChuyenDin : UserControl
    {
        public UCChuyenDin()
        {
            InitializeComponent();
        }
        private int _SoChuyenKhau;

        public int SoChuyenKhau
        {
            get { return _SoChuyenKhau; }
            set { _SoChuyenKhau = value; }
        }
        private void btnTim_Click(object sender, EventArgs e)
        {
            if (txtSoSHK.Text == "")
            {
                MessageBox.Show("Nhập số sổ hộ khẩu cần tìm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            int SoSHK = int.Parse(txtSoSHK.Text);
            SoHoKhauPublic shk = SoHoKhauBLL.LoadSoHoKhauBySoSHK(SoSHK);
            if (shk == null)
            {
                txtDuong.Text = txtAp.Text = txtSoNha.Text = txtChuHo.Text = "";
                dgvNhanKhau.DataSource = null;

                MessageBox.Show("Không tìm thấy!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            else
            {
                txtDuong.Text = shk.Duong;
                txtAp.Text = shk.KhuPho.ToString();
                txtSoNha.Text = shk.SoNha;

                List<NhanKhauPublic> list_nk = NhanKhauBLL.LoadNhanKhauByMaSHK(shk.MaSHK);

                groupBox2.Enabled = true;
                txtChuHo.Text = list_nk.Find(item => item.MaQH == 1).HoTen;
                //txtChuHo.Text = list_nk.Where(item => item.QuanHe == "Chủ hộ").FirstOrDefault().HoTen;

                dgvNhanKhau.DataSource = list_nk;
                //dgvNhanKhau.Columns[0].HeaderText = "Mã nhân khẩu";
                dgvNhanKhau.Columns[1].HeaderText = "Họ và tên";
                //dgvNhanKhau.Columns[3].HeaderText = "Tên gọi khác";
                dgvNhanKhau.Columns[4].HeaderText = "CMND";
                dgvNhanKhau.Columns[5].HeaderText = "Ngày sinh";
                //dgvNhanKhau.Columns[6].HeaderText = "Nơi sinh";
                dgvNhanKhau.Columns[7].HeaderText = "Giới tính";
                dgvNhanKhau.Columns[8].HeaderText = "Quê quán";
                dgvNhanKhau.Columns[9].HeaderText = "Dân tộc";
                dgvNhanKhau.Columns[10].HeaderText = "Nghề nghiệp";
                dgvNhanKhau.Columns[11].HeaderText = "Quốc tịch";
                //dgvNhanKhau.Columns[12].HeaderText = "Chứng tử";
                dgvNhanKhau.Columns[13].HeaderText = "Tôn giáo";
                dgvNhanKhau.Columns[14].HeaderText = "Trình độ";
                //dgvNhanKhau.Columns[15].HeaderText = "Sổ hộ khẩu";
                dgvNhanKhau.Columns[16].HeaderText = "Quan hệ";
                dgvNhanKhau.Columns[0].Visible = false;
                //dgvNhanKhau.Columns[1].Visible = false;
                dgvNhanKhau.Columns[2].Visible = false;
                dgvNhanKhau.Columns[3].Visible = false;
                //dgvNhanKhau.Columns[4].Visible = false;
                //dgvNhanKhau.Columns[5].Visible = false;
                dgvNhanKhau.Columns[6].Visible = false;
                //dgvNhanKhau.Columns[7].Visible = false;
                //dgvNhanKhau.Columns[8].Visible = false;
                dgvNhanKhau.Columns[9].Visible = false;
                //dgvNhanKhau.Columns[10].Visible = false;
                dgvNhanKhau.Columns[11].Visible = false;
                dgvNhanKhau.Columns[12].Visible = false;
                dgvNhanKhau.Columns[13].Visible = false;
                dgvNhanKhau.Columns[14].Visible = false;
                dgvNhanKhau.Columns[15].Visible = false;
                //dgvNhanKhau.Columns[16].Visible = false;
                dgvNhanKhau.Columns[17].Visible = false;
                dgvNhanKhau.Columns[18].Visible = false;
                dgvNhanKhau.Columns[19].Visible = false;
                dgvNhanKhau.Columns[20].Visible = false;
                dgvNhanKhau.Columns[21].Visible = false;
                dgvNhanKhau.Columns[22].Visible = false;
                dgvNhanKhau.Columns[23].Visible = false;
                DataGridViewCellStyle style = new DataGridViewCellStyle();
                
                style.ForeColor = Color.AliceBlue;
                style.BackColor = Color.Red;
                
                for (int i = dgvNhanKhau.RowCount - 1; i >= 0; i--)
                {
                    if ((byte)dgvNhanKhau.Rows[i].Cells[21].Value != 0)
                    {
                        //MessageBox.Show("geg");
                        dgvNhanKhau.Rows[i].DefaultCellStyle = style;
                    }
                    //if (ChuyenKhauBLL.TestChuyenKhau((int)dgvNhanKhau.Rows[i].Cells[0].Value)==false)//(bool)dgvNhanKhau.Rows[i].Cells[5].Value == true)
                    //{
                    //    dgvNhanKhau.Rows[i].DefaultCellStyle = style1;
                    //}

                }

            }
        }
        public int MaNK;

        private void dgvNhanKhau_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewCell cell = null;

            foreach (DataGridViewCell select in dgvNhanKhau.SelectedCells)
            {
                cell = select;
            }
            if (cell != null)
            {
                DataGridViewRow row = cell.OwningRow;

                MaNK = (int)row.Cells[0].Value;
                txtHoTen.Text = (string)row.Cells[1].Value;
                txtCMND.Text = (string)row.Cells[4].Value;
                dateNgaySinh.Text = Convert.ToDateTime(row.Cells[5].Value).ToShortDateString();
                // ((DateTime)row.Cells[5].Value).ToString("dd-MM-yyyy");
                if ((bool)row.Cells[7].Value == true)
                    rdtGioiTinhNam.Checked = true;
                else
                    rdtGioiTinhNu.Checked = true;
                txtQueQuan.Text = (string)row.Cells[8].Value;
                txtDanToc.Text = (DanTocBLL.LoadDanTocByMaDT((byte)row.Cells[9].Value).TenDanToc).ToString();

                txtNgheNghiep.Text = (string)row.Cells[10].Value;
                txtQuocTich.Text = (QuocTichBLL.LoadQuocTichByMaQT((byte)row.Cells[11].Value).TenQuocTich).ToString();
                txtTonGiao.Text = (TonGiaoBLL.LoadTonGiaoByMaTG((byte)row.Cells[13].Value).TenTonGiao).ToString();
                txtTrinhDo.Text = (TrinhDoBLL.GetTrinhDoByMaTD((byte)row.Cells[14].Value).TenTrinhDo).ToString();
                txtNoiSinh.Text = TinhBLL.LoadTinhByMaT((int)row.Cells[6].Value);
                if (ChuyenKhauBLL.TestChuyenKhau(MaNK) == true)
                { 

                }
                if ((byte)row.Cells[21].Value != 0)
                {
                    labChuyenKhau.Text = "Đã xóa thường trú, không thể chuyển";
                    groupBox1.Enabled = false;
                    groupBox2.Enabled = false;
                    groupBox3.Enabled = false;
                    btnCapGiay.Enabled = false;
                    btnChuyen.Enabled = false;
                }
                else
                {
                    labChuyenKhau.Text = "";
                    groupBox1.Enabled = true;
                    groupBox2.Enabled = true;
                    groupBox3.Enabled = true;
                    btnCapGiay.Enabled = true;
                    btnChuyen.Enabled = true;
                }
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Thoát không lưu", "Thoát", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

        }
        private void UCChuyenDin_Load(object sender, EventArgs e)
        {

            groupBox2.Enabled = false;
            //txtMaCK.Text = DungChung.LoadMaCDi().ToString();

            cmbCanBoDangKi.Text = frmDangNhap.user_login.HoTen;
            cmbNguoiCap.DataSource = NguoiDungBLL.LoadNguoiCap();
            cmbNguoiCap.DisplayMember = "HoTen";
            cmbNguoiCap.ValueMember = "MaND";
            //load chuc vu
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiCap.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVuNguoiChuyen.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVuNguoiChuyen.Enabled = false;

            dateNgayCap.Value = DateTime.Parse(DateTime.Now.ToString());

            cmbTinh.DataSource = TinhBLL.LoadTinh();
            cmbTinh.DisplayMember = "TenTinh";
            cmbTinh.ValueMember = "MaT";

            cmbTinh.SelectedIndex = -1;
            cmbTinh.Text = "  --- Chọn Tỉnh/Tp ---  ";
            cmbQuanHuyen.Text = "- Chọn Quận/Huyện --";
            cmbPhuongXa.Text = "--- Chọn Phường/Xã --- ";

            txtSoChuyenKhau.Text = DungChung.SoChuyenKhau().ToString();

            txtNoiCap.Text = ThietLapBLL.LoadDiaChi();
            cmbQuanHe.DataSource = QuanHeBLL.LoadQuanHe();
            cmbQuanHe.DisplayMember = "TenQuanHe";
            cmbQuanHe.ValueMember = "MaQH";
        }

        private void cmbTinh_SelectionChangeCommitted(object sender, EventArgs e)
        {
            //TinhPublic t = TinhBLL.LoadQuanHuyenByMaQH((byte)cmbQuanHuyen.SelectedValue);
            cmbQuanHuyen.DataSource = QuanHuyenBLL.LoadQuanHuyenByMaT((int)cmbTinh.SelectedValue);
            cmbQuanHuyen.DisplayMember = "TenQuanHuyen";
            cmbQuanHuyen.ValueMember = "MaQH";
            cmbQuanHuyen.SelectedIndex = -1;
            cmbQuanHuyen.Text = "- Chọn Quận/Huyện --";
            
        }

        private void cmbQuanHuyen_SelectionChangeCommitted(object sender, EventArgs e)
        {
            //QuanHuyenPublic px = QuanHuyenBLL.LoadQuanHuyenByMaQH((byte)cmbQuanHuyen.SelectedValue);
            cmbPhuongXa.DataSource = PhuongXaBLL.LoadPhuongXaByMaQH((int)cmbQuanHuyen.SelectedValue);
            cmbPhuongXa.DisplayMember = "TenPhuongXa";
            cmbPhuongXa.ValueMember = "MaPX";
            cmbPhuongXa.SelectedIndex = -1;
            cmbPhuongXa.Text = "--- Chọn Phường/Xã --- ";
        }

        private void btnChuyen_Click(object sender, EventArgs e)
        {
            if (NhanKhauBLL.LoadNhanKhauByMaNK(MaNK).MaQH == 1)
            {
                MessageBox.Show("Không thể chuyển chủ hộ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (txtLyDoChuyen.Text == "")
            {
                MessageBox.Show("Chưa nhập lí do chuyển ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtLyDoChuyen.Focus();
                return;
            }
            if (txtChuHoMoi.Text == "")
            {
                MessageBox.Show("Chưa nhập chủ hộ nơi chuyển ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtChuHoMoi.Focus();
                return;
            }
            if((int)cmbTinh.SelectedIndex==-1)
            {
                MessageBox.Show("Vui lòng chọn tỉnh/tp ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbTinh.Focus();
                return;
            }
            if((int)cmbQuanHuyen.SelectedIndex==-1)
            {
                MessageBox.Show("Vui lòng chọn quận/huyện ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbQuanHuyen.Focus();
                return;
            }
            if((int)cmbPhuongXa.SelectedIndex==-1)
            {
                MessageBox.Show("Vui lòng chọn phường/xã ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbPhuongXa.Focus();
                return;
            }
            ChuyenKhauPublic ck = new ChuyenKhauPublic();
            //ck.MaNK = int.Parse(txtMaNK.Text);
            ck.MaNK = MaNK;
            ck.SoChuyenKhau = int.Parse(txtSoChuyenKhau.Text);
            //MessageBox.Show(tl);
            ck.LyDoChuyen = txtLyDoChuyen.Text;
            ck.MaCK = DungChung.LoadMaCK();
            //ck.NgayChuyen=dateNgayChuyen.Value;
            ck.NoiChuyen = (int)cmbPhuongXa.SelectedValue;
            ck.NoiCap = ThietLapBLL.LoadMaDiaChi();
            ck.CanBoNoiCap = cmbCanBoDangKi.Text;
            ck.CanBoNoiNhan = null;
            ck.ChucVuNguoiCap = (byte)NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiCap.SelectedValue).MaCV;
            //ck.ChucVuNguoiNhan =
            ck.LyDoChuyen = txtLyDoChuyen.Text;
            ck.NguoiNhan = null;
            ck.NgayCap = dateNgayCap.Value;
            ck.NguoiCap = cmbNguoiCap.Text;
            ck.NgayNhan = null;
            ck.ChuHo = txtChuHoMoi.Text;
            ck.MaQH = (byte)cmbQuanHe.SelectedValue;
            ck.ThuongTru = SoHoKhauBLL.LoadDiaChiSHKByMaNK(MaNK) + ", " + ThietLapBLL.LoadDiaChi();
            //ck.ChucVuNguoiNhan = null;
            ChuyenKhauBLL.InsertChuyenKhau(ck);
            NhanKhauBLL.UpdateNgayXoa(ck.MaNK, dateNgayCap.Value, 3);
            if ((int)cmbQuanHuyen.SelectedValue == 101)
                NhanKhauBLL.UpdateTinhTrang(ck.MaNK, 1);
            MessageBox.Show("Chuyển khẩu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

            dgvChuyenKhau.DataSource = ChuyenKhauBLL.LoadChuyenKhauBySoCK(int.Parse(txtSoChuyenKhau.Text));
            //dgvChuyenKhau.Columns[0].HeaderText = "Mã chuyển khẩu";
            //dgvChuyenKhau.Columns[1].HeaderText = "Mã nhân khẩu";
            dgvChuyenKhau.Columns[2].HeaderText = "Số";         
            dgvChuyenKhau.Columns[3].HeaderText = "Nơi chuyển";
            dgvChuyenKhau.Columns[4].HeaderText = "Lý do chuyển";
            //dgvChuyenKhau.Columns[5].HeaderText = "Ngày cấp";
            //dgvChuyenKhau.Columns[6].HeaderText = "Cán bộ nơi chuyển";
            dgvChuyenKhau.Columns[7].HeaderText = "Người cấp";
            //dgvChuyenKhau.Columns[8].HeaderText = "Chức vụ người chuyển";
            dgvChuyenKhau.Columns[9].HeaderText = "Nơi cấp";
            //dgvChuyenKhau.Columns[10].HeaderText = "Cán bộ nơi nhận";
            //dgvChuyenKhau.Columns[11].HeaderText = "Ngày nhận";
            dgvChuyenKhau.Columns[12].HeaderText = "Người nhận";
            //dgvChuyenKhau.Columns[13].HeaderText = "Chức vụ người nhận";
            //dgvChuyenKhau.Columns[14].HeaderText = "Nơi ở trước";
            dgvChuyenKhau.Columns[15].HeaderText = "Chủ hộ";
            dgvChuyenKhau.Columns[16].HeaderText = "Quan hệ";
            dgvChuyenKhau.Columns[0].Visible = false;
            dgvChuyenKhau.Columns[1].Visible = false;
            //dgvChuyenKhau.Columns[2].Visible = false;
            //dgvChuyenKhau.Columns[3].Visible = false;
            //dgvChuyenKhau.Columns[4].Visible = false;
            dgvChuyenKhau.Columns[5].Visible = false;
            dgvChuyenKhau.Columns[6].Visible = false;
            //dgvChuyenKhau.Columns[7].Visible = false;
            dgvChuyenKhau.Columns[8].Visible = false;
            //dgvChuyenKhau.Columns[9].Visible = false;
            //dgvChuyenKhau.Columns[10].Visible = false;
            dgvChuyenKhau.Columns[11].Visible = false;
            //dgvChuyenKhau.Columns[12].Visible = false;
            dgvChuyenKhau.Columns[13].Visible = false;
            dgvChuyenKhau.Columns[14].Visible = false;
            dgvChuyenKhau.Columns[15].Visible = false;
            dgvChuyenKhau.Columns[16].Visible = false;
            //dgvChuyenKhau.Columns[16].Visible = false;

            btnTim_Click(sender, e);
            cmbTinh.Enabled = false;
            cmbQuanHuyen.Enabled = false;
            cmbPhuongXa.Enabled = false;
            txtChuHoMoi.Enabled = false;
            txtLyDoChuyen.ResetText();

        }

        private void txtSoSHK_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoSHK.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
            if (e.KeyChar == 13)
                btnTim_Click(sender, e);
        }

        private void cmbNguoiChuyen_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cmbTinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cmbQuanHuyen_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cmbPhuongXa_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void btnCapGiay_Click(object sender, EventArgs e)
        {
            if (dgvChuyenKhau == null)
                _SoChuyenKhau = DungChung.LoadMaCK();
            else
                _SoChuyenKhau = int.Parse(txtSoChuyenKhau.Text);

            btnChuyen_Click(sender, e);
            MessageBox.Show("Không thể in", "Nội dung", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            //frmCapChuyenKhau cck = new frmCapChuyenKhau(_SoChuyenKhau);
            //cck.Show();
        }

        private void txtLyDoChuyen_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtLyDoChuyen.Text.Length > 49 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtChuHoMoi_Leave(object sender, EventArgs e)
        {
            if (cmbPhuongXa.SelectedValue !=null)
            {
                ThietLapPublic tl = ThietLapBLL.LoadThietLapByMaTL((int)cmbPhuongXa.SelectedValue);
                if (tl != null)
                {
                    bool nk = NhanKhauBLL.TimChuHo(tl.TenServer, tl.TenData, txtChuHoMoi.Text);
                    if (nk == false)
                    {
                        MessageBox.Show("Không có chủ hộ này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        txtChuHoMoi.ResetText();
                    }
                    else
                        return;
                }
                else
                {
                    return;
                }
            }
           
        }

        private void cmbPhuongXa_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtChuHoMoi.ResetText();
        }       
    }
}
